C# Socket.Poll方法代码示例 您所在的位置:网站首页 socket poll C# Socket.Poll方法代码示例

C# Socket.Poll方法代码示例

2023-03-13 01:42| 来源: 网络整理| 查看: 265

本文整理汇总了C#中System.Net.Sockets.Socket.Poll方法的典型用法代码示例。如果您正苦于以下问题:C# Socket.Poll方法的具体用法?C# Socket.Poll怎么用?C# Socket.Poll使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在System.Net.Sockets.Socket的用法示例。

在下文中一共展示了Socket.Poll方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C#代码示例。

示例1: IsConnected protected static bool IsConnected(Socket socket) { if (socket == null) return false; try { if (!socket.Poll(1, SelectMode.SelectRead) || socket.Available != 0) return true; socket.Close(); return false; } catch { socket.Close(); return false; } }开发者ID:ApInvent,项目名称:SyncPaintBoard,代码行数:18,代码来源:TransportBase.cs 示例2: StartListening private void StartListening() { Socket serverSocket = null; EndPoint endPoint = new IPEndPoint(IPAddress.Any, port); try { serverSocket = new Socket(endPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp); serverSocket.Blocking = true; serverSocket.Bind(endPoint); serverSocket.Listen(queueSize); log.Info("server started, listening on port " + port); running = true; stopped = false; while (running) { // Calling socket.Accept blocks the thread until the next incoming connection, // making difficult to stop the server from another thread. // The Poll always returns after the specified delay elapsed, or immediately // returns if it detects an incoming connection. It's the perfect method // to make this loop regularly check the running var, ending gracefully // if requested. if (serverSocket.Poll(SocketPollMicroseconds, SelectMode.SelectRead)) { Socket clientSocket = serverSocket.Accept(); Interlocked.Increment(ref connectionsCounter.value); ConversionRequest connection = new ConversionRequest(clientSocket, converter, connectionsCounter); // Creating a single thread for every connection has huge costs, // so I leverage the .NET internal thread pool ThreadPool.QueueUserWorkItem(connection.Run); } } } catch (Exception e) { log.Error("exception", e); } finally { if (serverSocket != null) serverSocket.Close(); running = false; stopped = true; log.Info("server stopped ("+ connectionsCounter.value + " connections still open)"); } }开发者ID:matecat,项目名称:MateCat-Win-Converter,代码行数:47,代码来源:ConversionServer.cs 示例3: StartListening private void StartListening() { Socket serverSocket = null; EndPoint endPoint = new IPEndPoint(IPAddress.Any, port); try { serverSocket = new Socket(endPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp); serverSocket.Blocking = true; serverSocket.Bind(endPoint); serverSocket.Listen(queueSize); log.Info("server started, listening on port " + port); running = true; stopped = false; while (running) { // Calling socket.Accept blocks the thread until the next incoming connection, // making difficult to stop the server from another thread. // The Poll always returns after the specified delay elapsed, or immeidately // returns if it detects an incoming connection. It's the perfect method // to make this loop regularly che the running var, ending gracefully // if requested. if (serverSocket.Poll(SocketPollMicroseconds, SelectMode.SelectRead)) { Socket clientSocket = serverSocket.Accept(); log.Info("new request received"); ConversionRequest connection = new ConversionRequest(clientSocket, converter); Thread clientThread = new Thread(new ThreadStart(connection.Run)); clientThread.Start(); } } } catch (Exception e) { log.Error("exception", e); } finally { if (serverSocket != null) serverSocket.Close(); running = false; stopped = true; log.Info("server stopped"); } }开发者ID:sbxlmdsl,项目名称:MateCat-Win-Converter,代码行数:46,代码来源:ConversionServer.cs 示例4: worker private void worker() { Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); IPEndPoint ipEndPoint = new IPEndPoint(IPAddress.Any, ipPort); EndPoint remoteEndPoint = (EndPoint)ipEndPoint; socket.Bind(ipEndPoint); socket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(IPAddress.Parse(ipAddress))); byte[] receivedData = new byte[1024]; while (_KeepWorking) { if (socket.Poll(200000, SelectMode.SelectRead)) { socket.Receive(receivedData); switch (apiVersionStr) { case "0.8": apiVersionInt = 8; parser_v08(receivedData); break; case "1.0+": parser_v10p(receivedData); break; } receivedData = new byte[1024]; } } socket.Close(); }开发者ID:KeiserCorp,项目名称:Keiser.M3i.ReceiverDebug,代码行数:28,代码来源:Receiver.cs 示例5: Read /// /// Reads an IcmpPacket from the wire using the specified socket from the specified end point /// /// The socket to read /// The packet read /// The end point read from /// public virtual bool Read(Socket socket, EndPoint ep, int timeout, out IcmpPacket packet, out int bytesReceived) { const int MAX_PATH = 256; packet = null; bytesReceived = 0; /* * check the parameters * */ if (socket == null) throw new ArgumentNullException("socket"); if (socket == null) throw new ArgumentNullException("ep"); // see if any data is readable on the socket bool success = socket.Poll(timeout * 1000, SelectMode.SelectRead); // if there is data waiting to be read if (success) { // prepare to receive data byte[] bytes = new byte[MAX_PATH]; bytesReceived = socket.ReceiveFrom(bytes, bytes.Length, SocketFlags.None, ref ep); /* * convert the bytes to an icmp packet * */ // packet = IcmpPacket.FromBytes(bytes); } return success; }开发者ID:FireBall1725,项目名称:Carbon.Framework,代码行数:42,代码来源:IcmpPacketReader.cs 示例6: ProcessRequest public void ProcessRequest(Socket socket) { using (socket) { var requestHandler = _requestHandlerFactory.Create(socket); if (socket.Poll(5000000, SelectMode.SelectRead)) { try { requestHandler.ProcessRequest(); } catch (Exception e) // Catch all unhandled internal server exceptions { if (_serverContext.ExceptionHandler != null) { _serverContext.ExceptionHandler.HandleException(e); } else { Debug.Print("Unhandled exception in web server, Message: " + e.Message + ", StackTrace: " + e.StackTrace); } } } } }开发者ID:JakeLardinois,项目名称:ScaleIndicatorPrinter,代码行数:25,代码来源:SocketListener.cs 示例7: ExecuteRequest public virtual BrowserResponse ExecuteRequest(string url, string method) { Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); sock.Connect(new IPEndPoint(FastCgiServer, FastCgiServerPort)); // Our request ushort requestId = 1; Request = new WebServerSocketRequest(sock, requestId); Request.SendBeginRequest(Role.Responder, true); SendParams(new Uri(url), method); Request.SendEmptyStdin(); // Receive the data from the other side if (!sock.Poll(MaxPollTime, SelectMode.SelectRead)) throw new Exception("Data took too long"); byte[] buf = new byte[4096]; int bytesRead; bool endRequest = false; while ((bytesRead = sock.Receive(buf)) > 0) { endRequest = Request.FeedBytes(buf, 0, bytesRead).Any(x => x.RecordType == RecordType.FCGIEndRequest); } if (!endRequest) throw new Exception("EndRequest was not received."); return new BrowserResponse(Request.AppStatus, Request.Stdout); }开发者ID:james-andrewsmith,项目名称:Fos,代码行数:28,代码来源:Browser.cs 示例8: BroadcastPing private static FoundServerInformation BroadcastPing(IPAddress broadcastAddress, int port) { using (var socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp) { SendTimeout = OptionLanSocketTimeout, ReceiveTimeout = OptionLanSocketTimeout, Blocking = false }) { EndPoint remoteEndPoint = new IPEndPoint(IPAddress.Any, 0); var buffer = new byte[3]; try { socket.SendTo(BitConverter.GetBytes(200), SocketFlags.DontRoute, new IPEndPoint(broadcastAddress, port)); if (socket.Poll(OptionLanPollTimeout * 1000, SelectMode.SelectRead)) { socket.ReceiveFrom(buffer, ref remoteEndPoint); } } catch (SocketException) { return null; } if (buffer[0] != 200 || buffer[1] + buffer[2]


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有